home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / emulator / bsvc-1.000 / bsvc-1 / bsvc-1.0.4 / src / Framework / AddressSpace.hxx < prev    next >
Text File  |  1995-07-26  |  3KB  |  85 lines

  1. ///////////////////////////////////////////////////////////////////////////////
  2. // $Id: AddressSpace.hxx,v 1.1 1994/02/18 19:47:48 bmott Exp $
  3. ///////////////////////////////////////////////////////////////////////////////
  4. // AddressSpace.hxx
  5. //
  6. //   This class maintains a list of devices and provides methods to peek and
  7. // poke into them.  
  8. //
  9. //
  10. // BSVC "A Microprocessor Simulation Framework"
  11. // Copyright (c) 1993
  12. // By: Bradford W. Mott
  13. // June 27,1993
  14. //
  15. ///////////////////////////////////////////////////////////////////////////////
  16. // $Log: AddressSpace.hxx,v $
  17. // Revision 1.1  1994/02/18  19:47:48  bmott
  18. // Initial revision
  19. //
  20. ///////////////////////////////////////////////////////////////////////////////
  21.  
  22. #ifndef ADDRESSSPACE_HXX
  23. #define ADDRESSSPACE_HXX
  24.  
  25. #include "String.h"
  26.  
  27. class BasicDevice;
  28.  
  29. ///////////////////////////////////////////////////////////////////////////////
  30. // Used to retrieve information on devices attached to the address space
  31. ///////////////////////////////////////////////////////////////////////////////
  32. struct AddressSpaceDeviceInformation {
  33.   String name;
  34.   String initialization_arguments;
  35.   unsigned int index;
  36. };
  37.  
  38. ///////////////////////////////////////////////////////////////////////////////
  39. // AddressSpace class declaration
  40. ///////////////////////////////////////////////////////////////////////////////
  41. class AddressSpace {
  42.   private:
  43.     // Structure for linked list of devices attached to the address space
  44.     struct DeviceNode {
  45.       BasicDevice *device;
  46.       DeviceNode  *next;
  47.     };
  48.  
  49.     DeviceNode *head;                // Head of the linked list
  50.     DeviceNode *tail;                // Tail of the linked list
  51.  
  52.     // Maximum address for this address space (In CPU words not bytes!!)
  53.     const unsigned long maximum_address;
  54.  
  55.   public:
  56.     AddressSpace(unsigned long maximum_address);
  57.     virtual ~AddressSpace();
  58.  
  59.     // Return the maximum address of the address space
  60.     inline unsigned long MaximumAddress()
  61.     { return(maximum_address); }
  62.  
  63.     // Attach a device to the address space (1=OK,0=ERROR)
  64.     int AttachDevice(BasicDevice*);
  65.  
  66.     // Detach and destory a device from the address space (1=OK,0=ERROR)
  67.     int DetachDevice(unsigned int index);
  68.  
  69.     // Reset all of the attached devices
  70.     void Reset();
  71.  
  72.     // Return the number of attached devices
  73.     int NumberOfAttachedDevices();
  74.  
  75.     // Get information about the device with the given index (1=OK,0=ERROR)
  76.     int GetDeviceInformation(int index, AddressSpaceDeviceInformation& info);
  77.        
  78.     // Peek a location in the address space (1=OK,0=Bus Error)
  79.     virtual int Peek(unsigned long addr, unsigned char &c);
  80.  
  81.     // Poke a location in the address space (1=OK,0=Bus Error)
  82.     virtual int Poke(unsigned long addr, unsigned char c);
  83. };
  84. #endif
  85.